/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package xsd.util;

import java.util.List;

import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;

import xsd.*;

/**
 * <!-- begin-user-doc -->
 * The <b>Switch</b> for the model's inheritance hierarchy.
 * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
 * to invoke the <code>caseXXX</code> method for each class of the model,
 * starting with the actual class of the object
 * and proceeding up the inheritance hierarchy
 * until a non-null result is returned,
 * which is the result of the switch.
 * <!-- end-user-doc -->
 * @see xsd.XsdPackage
 * @generated
 */
public class XsdSwitch<T> {
	/**
	 * The cached model package
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected static XsdPackage modelPackage;

	/**
	 * Creates an instance of the switch.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public XsdSwitch() {
		if (modelPackage == null) {
			modelPackage = XsdPackage.eINSTANCE;
		}
	}

	/**
	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the first non-null result returned by a <code>caseXXX</code> call.
	 * @generated
	 */
	public T doSwitch(EObject theEObject) {
		return doSwitch(theEObject.eClass(), theEObject);
	}

	/**
	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the first non-null result returned by a <code>caseXXX</code> call.
	 * @generated
	 */
	protected T doSwitch(EClass theEClass, EObject theEObject) {
		if (theEClass.eContainer() == modelPackage) {
			return doSwitch(theEClass.getClassifierID(), theEObject);
		}
		else {
			List<EClass> eSuperTypes = theEClass.getESuperTypes();
			return
				eSuperTypes.isEmpty() ?
					defaultCase(theEObject) :
					doSwitch(eSuperTypes.get(0), theEObject);
		}
	}

	/**
	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the first non-null result returned by a <code>caseXXX</code> call.
	 * @generated
	 */
	protected T doSwitch(int classifierID, EObject theEObject) {
		switch (classifierID) {
			case XsdPackage.XSD_ANNOTATION: {
				XSDAnnotation xsdAnnotation = (XSDAnnotation)theEObject;
				T result = caseXSDAnnotation(xsdAnnotation);
				if (result == null) result = caseXSDComponent(xsdAnnotation);
				if (result == null) result = caseXSDRedefineContent(xsdAnnotation);
				if (result == null) result = caseXSDConcreteComponent(xsdAnnotation);
				if (result == null) result = caseXSDSchemaContent(xsdAnnotation);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_ATTRIBUTE_DECLARATION: {
				XSDAttributeDeclaration xsdAttributeDeclaration = (XSDAttributeDeclaration)theEObject;
				T result = caseXSDAttributeDeclaration(xsdAttributeDeclaration);
				if (result == null) result = caseXSDFeature(xsdAttributeDeclaration);
				if (result == null) result = caseXSDSchemaContent(xsdAttributeDeclaration);
				if (result == null) result = caseXSDNamedComponent(xsdAttributeDeclaration);
				if (result == null) result = caseXSDConcreteComponent(xsdAttributeDeclaration);
				if (result == null) result = caseXSDComponent(xsdAttributeDeclaration);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_ATTRIBUTE_GROUP_CONTENT: {
				XSDAttributeGroupContent xsdAttributeGroupContent = (XSDAttributeGroupContent)theEObject;
				T result = caseXSDAttributeGroupContent(xsdAttributeGroupContent);
				if (result == null) result = caseXSDConcreteComponent(xsdAttributeGroupContent);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_ATTRIBUTE_GROUP_DEFINITION: {
				XSDAttributeGroupDefinition xsdAttributeGroupDefinition = (XSDAttributeGroupDefinition)theEObject;
				T result = caseXSDAttributeGroupDefinition(xsdAttributeGroupDefinition);
				if (result == null) result = caseXSDRedefinableComponent(xsdAttributeGroupDefinition);
				if (result == null) result = caseXSDAttributeGroupContent(xsdAttributeGroupDefinition);
				if (result == null) result = caseXSDRedefineContent(xsdAttributeGroupDefinition);
				if (result == null) result = caseXSDNamedComponent(xsdAttributeGroupDefinition);
				if (result == null) result = caseXSDConcreteComponent(xsdAttributeGroupDefinition);
				if (result == null) result = caseXSDSchemaContent(xsdAttributeGroupDefinition);
				if (result == null) result = caseXSDComponent(xsdAttributeGroupDefinition);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_ATTRIBUTE_USE: {
				XSDAttributeUse xsdAttributeUse = (XSDAttributeUse)theEObject;
				T result = caseXSDAttributeUse(xsdAttributeUse);
				if (result == null) result = caseXSDComponent(xsdAttributeUse);
				if (result == null) result = caseXSDAttributeGroupContent(xsdAttributeUse);
				if (result == null) result = caseXSDConcreteComponent(xsdAttributeUse);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_BOUNDED_FACET: {
				XSDBoundedFacet xsdBoundedFacet = (XSDBoundedFacet)theEObject;
				T result = caseXSDBoundedFacet(xsdBoundedFacet);
				if (result == null) result = caseXSDFundamentalFacet(xsdBoundedFacet);
				if (result == null) result = caseXSDFacet(xsdBoundedFacet);
				if (result == null) result = caseXSDComponent(xsdBoundedFacet);
				if (result == null) result = caseXSDConcreteComponent(xsdBoundedFacet);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_CARDINALITY_FACET: {
				XSDCardinalityFacet xsdCardinalityFacet = (XSDCardinalityFacet)theEObject;
				T result = caseXSDCardinalityFacet(xsdCardinalityFacet);
				if (result == null) result = caseXSDFundamentalFacet(xsdCardinalityFacet);
				if (result == null) result = caseXSDFacet(xsdCardinalityFacet);
				if (result == null) result = caseXSDComponent(xsdCardinalityFacet);
				if (result == null) result = caseXSDConcreteComponent(xsdCardinalityFacet);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_COMPLEX_TYPE_CONTENT: {
				XSDComplexTypeContent xsdComplexTypeContent = (XSDComplexTypeContent)theEObject;
				T result = caseXSDComplexTypeContent(xsdComplexTypeContent);
				if (result == null) result = caseXSDComponent(xsdComplexTypeContent);
				if (result == null) result = caseXSDConcreteComponent(xsdComplexTypeContent);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_COMPLEX_TYPE_DEFINITION: {
				XSDComplexTypeDefinition xsdComplexTypeDefinition = (XSDComplexTypeDefinition)theEObject;
				T result = caseXSDComplexTypeDefinition(xsdComplexTypeDefinition);
				if (result == null) result = caseXSDTypeDefinition(xsdComplexTypeDefinition);
				if (result == null) result = caseXSDScope(xsdComplexTypeDefinition);
				if (result == null) result = caseXSDRedefinableComponent(xsdComplexTypeDefinition);
				if (result == null) result = caseXSDRedefineContent(xsdComplexTypeDefinition);
				if (result == null) result = caseXSDComponent(xsdComplexTypeDefinition);
				if (result == null) result = caseXSDNamedComponent(xsdComplexTypeDefinition);
				if (result == null) result = caseXSDSchemaContent(xsdComplexTypeDefinition);
				if (result == null) result = caseXSDConcreteComponent(xsdComplexTypeDefinition);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_COMPONENT: {
				XSDComponent xsdComponent = (XSDComponent)theEObject;
				T result = caseXSDComponent(xsdComponent);
				if (result == null) result = caseXSDConcreteComponent(xsdComponent);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_CONCRETE_COMPONENT: {
				XSDConcreteComponent xsdConcreteComponent = (XSDConcreteComponent)theEObject;
				T result = caseXSDConcreteComponent(xsdConcreteComponent);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_CONSTRAINING_FACET: {
				XSDConstrainingFacet xsdConstrainingFacet = (XSDConstrainingFacet)theEObject;
				T result = caseXSDConstrainingFacet(xsdConstrainingFacet);
				if (result == null) result = caseXSDFacet(xsdConstrainingFacet);
				if (result == null) result = caseXSDComponent(xsdConstrainingFacet);
				if (result == null) result = caseXSDConcreteComponent(xsdConstrainingFacet);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_DIAGNOSTIC: {
				XSDDiagnostic xsdDiagnostic = (XSDDiagnostic)theEObject;
				T result = caseXSDDiagnostic(xsdDiagnostic);
				if (result == null) result = caseXSDConcreteComponent(xsdDiagnostic);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_ELEMENT_DECLARATION: {
				XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)theEObject;
				T result = caseXSDElementDeclaration(xsdElementDeclaration);
				if (result == null) result = caseXSDFeature(xsdElementDeclaration);
				if (result == null) result = caseXSDSchemaContent(xsdElementDeclaration);
				if (result == null) result = caseXSDTerm(xsdElementDeclaration);
				if (result == null) result = caseXSDNamedComponent(xsdElementDeclaration);
				if (result == null) result = caseXSDConcreteComponent(xsdElementDeclaration);
				if (result == null) result = caseXSDComponent(xsdElementDeclaration);
				if (result == null) result = caseXSDParticleContent(xsdElementDeclaration);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_ENUMERATION_FACET: {
				XSDEnumerationFacet xsdEnumerationFacet = (XSDEnumerationFacet)theEObject;
				T result = caseXSDEnumerationFacet(xsdEnumerationFacet);
				if (result == null) result = caseXSDRepeatableFacet(xsdEnumerationFacet);
				if (result == null) result = caseXSDConstrainingFacet(xsdEnumerationFacet);
				if (result == null) result = caseXSDFacet(xsdEnumerationFacet);
				if (result == null) result = caseXSDComponent(xsdEnumerationFacet);
				if (result == null) result = caseXSDConcreteComponent(xsdEnumerationFacet);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_FACET: {
				XSDFacet xsdFacet = (XSDFacet)theEObject;
				T result = caseXSDFacet(xsdFacet);
				if (result == null) result = caseXSDComponent(xsdFacet);
				if (result == null) result = caseXSDConcreteComponent(xsdFacet);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_FEATURE: {
				XSDFeature xsdFeature = (XSDFeature)theEObject;
				T result = caseXSDFeature(xsdFeature);
				if (result == null) result = caseXSDNamedComponent(xsdFeature);
				if (result == null) result = caseXSDComponent(xsdFeature);
				if (result == null) result = caseXSDConcreteComponent(xsdFeature);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_FIXED_FACET: {
				XSDFixedFacet xsdFixedFacet = (XSDFixedFacet)theEObject;
				T result = caseXSDFixedFacet(xsdFixedFacet);
				if (result == null) result = caseXSDConstrainingFacet(xsdFixedFacet);
				if (result == null) result = caseXSDFacet(xsdFixedFacet);
				if (result == null) result = caseXSDComponent(xsdFixedFacet);
				if (result == null) result = caseXSDConcreteComponent(xsdFixedFacet);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_FRACTION_DIGITS_FACET: {
				XSDFractionDigitsFacet xsdFractionDigitsFacet = (XSDFractionDigitsFacet)theEObject;
				T result = caseXSDFractionDigitsFacet(xsdFractionDigitsFacet);
				if (result == null) result = caseXSDFixedFacet(xsdFractionDigitsFacet);
				if (result == null) result = caseXSDConstrainingFacet(xsdFractionDigitsFacet);
				if (result == null) result = caseXSDFacet(xsdFractionDigitsFacet);
				if (result == null) result = caseXSDComponent(xsdFractionDigitsFacet);
				if (result == null) result = caseXSDConcreteComponent(xsdFractionDigitsFacet);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_FUNDAMENTAL_FACET: {
				XSDFundamentalFacet xsdFundamentalFacet = (XSDFundamentalFacet)theEObject;
				T result = caseXSDFundamentalFacet(xsdFundamentalFacet);
				if (result == null) result = caseXSDFacet(xsdFundamentalFacet);
				if (result == null) result = caseXSDComponent(xsdFundamentalFacet);
				if (result == null) result = caseXSDConcreteComponent(xsdFundamentalFacet);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_IDENTITY_CONSTRAINT_DEFINITION: {
				XSDIdentityConstraintDefinition xsdIdentityConstraintDefinition = (XSDIdentityConstraintDefinition)theEObject;
				T result = caseXSDIdentityConstraintDefinition(xsdIdentityConstraintDefinition);
				if (result == null) result = caseXSDNamedComponent(xsdIdentityConstraintDefinition);
				if (result == null) result = caseXSDComponent(xsdIdentityConstraintDefinition);
				if (result == null) result = caseXSDConcreteComponent(xsdIdentityConstraintDefinition);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_IMPORT: {
				XSDImport xsdImport = (XSDImport)theEObject;
				T result = caseXSDImport(xsdImport);
				if (result == null) result = caseXSDSchemaDirective(xsdImport);
				if (result == null) result = caseXSDSchemaContent(xsdImport);
				if (result == null) result = caseXSDConcreteComponent(xsdImport);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_INCLUDE: {
				XSDInclude xsdInclude = (XSDInclude)theEObject;
				T result = caseXSDInclude(xsdInclude);
				if (result == null) result = caseXSDSchemaCompositor(xsdInclude);
				if (result == null) result = caseXSDSchemaDirective(xsdInclude);
				if (result == null) result = caseXSDSchemaContent(xsdInclude);
				if (result == null) result = caseXSDConcreteComponent(xsdInclude);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_LENGTH_FACET: {
				XSDLengthFacet xsdLengthFacet = (XSDLengthFacet)theEObject;
				T result = caseXSDLengthFacet(xsdLengthFacet);
				if (result == null) result = caseXSDFixedFacet(xsdLengthFacet);
				if (result == null) result = caseXSDConstrainingFacet(xsdLengthFacet);
				if (result == null) result = caseXSDFacet(xsdLengthFacet);
				if (result == null) result = caseXSDComponent(xsdLengthFacet);
				if (result == null) result = caseXSDConcreteComponent(xsdLengthFacet);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_MAX_EXCLUSIVE_FACET: {
				XSDMaxExclusiveFacet xsdMaxExclusiveFacet = (XSDMaxExclusiveFacet)theEObject;
				T result = caseXSDMaxExclusiveFacet(xsdMaxExclusiveFacet);
				if (result == null) result = caseXSDMaxFacet(xsdMaxExclusiveFacet);
				if (result == null) result = caseXSDFixedFacet(xsdMaxExclusiveFacet);
				if (result == null) result = caseXSDConstrainingFacet(xsdMaxExclusiveFacet);
				if (result == null) result = caseXSDFacet(xsdMaxExclusiveFacet);
				if (result == null) result = caseXSDComponent(xsdMaxExclusiveFacet);
				if (result == null) result = caseXSDConcreteComponent(xsdMaxExclusiveFacet);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_MAX_FACET: {
				XSDMaxFacet xsdMaxFacet = (XSDMaxFacet)theEObject;
				T result = caseXSDMaxFacet(xsdMaxFacet);
				if (result == null) result = caseXSDFixedFacet(xsdMaxFacet);
				if (result == null) result = caseXSDConstrainingFacet(xsdMaxFacet);
				if (result == null) result = caseXSDFacet(xsdMaxFacet);
				if (result == null) result = caseXSDComponent(xsdMaxFacet);
				if (result == null) result = caseXSDConcreteComponent(xsdMaxFacet);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_MAX_INCLUSIVE_FACET: {
				XSDMaxInclusiveFacet xsdMaxInclusiveFacet = (XSDMaxInclusiveFacet)theEObject;
				T result = caseXSDMaxInclusiveFacet(xsdMaxInclusiveFacet);
				if (result == null) result = caseXSDMaxFacet(xsdMaxInclusiveFacet);
				if (result == null) result = caseXSDFixedFacet(xsdMaxInclusiveFacet);
				if (result == null) result = caseXSDConstrainingFacet(xsdMaxInclusiveFacet);
				if (result == null) result = caseXSDFacet(xsdMaxInclusiveFacet);
				if (result == null) result = caseXSDComponent(xsdMaxInclusiveFacet);
				if (result == null) result = caseXSDConcreteComponent(xsdMaxInclusiveFacet);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_MAX_LENGTH_FACET: {
				XSDMaxLengthFacet xsdMaxLengthFacet = (XSDMaxLengthFacet)theEObject;
				T result = caseXSDMaxLengthFacet(xsdMaxLengthFacet);
				if (result == null) result = caseXSDFixedFacet(xsdMaxLengthFacet);
				if (result == null) result = caseXSDConstrainingFacet(xsdMaxLengthFacet);
				if (result == null) result = caseXSDFacet(xsdMaxLengthFacet);
				if (result == null) result = caseXSDComponent(xsdMaxLengthFacet);
				if (result == null) result = caseXSDConcreteComponent(xsdMaxLengthFacet);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_MIN_EXCLUSIVE_FACET: {
				XSDMinExclusiveFacet xsdMinExclusiveFacet = (XSDMinExclusiveFacet)theEObject;
				T result = caseXSDMinExclusiveFacet(xsdMinExclusiveFacet);
				if (result == null) result = caseXSDMinFacet(xsdMinExclusiveFacet);
				if (result == null) result = caseXSDFixedFacet(xsdMinExclusiveFacet);
				if (result == null) result = caseXSDConstrainingFacet(xsdMinExclusiveFacet);
				if (result == null) result = caseXSDFacet(xsdMinExclusiveFacet);
				if (result == null) result = caseXSDComponent(xsdMinExclusiveFacet);
				if (result == null) result = caseXSDConcreteComponent(xsdMinExclusiveFacet);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_MIN_FACET: {
				XSDMinFacet xsdMinFacet = (XSDMinFacet)theEObject;
				T result = caseXSDMinFacet(xsdMinFacet);
				if (result == null) result = caseXSDFixedFacet(xsdMinFacet);
				if (result == null) result = caseXSDConstrainingFacet(xsdMinFacet);
				if (result == null) result = caseXSDFacet(xsdMinFacet);
				if (result == null) result = caseXSDComponent(xsdMinFacet);
				if (result == null) result = caseXSDConcreteComponent(xsdMinFacet);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_MIN_INCLUSIVE_FACET: {
				XSDMinInclusiveFacet xsdMinInclusiveFacet = (XSDMinInclusiveFacet)theEObject;
				T result = caseXSDMinInclusiveFacet(xsdMinInclusiveFacet);
				if (result == null) result = caseXSDMinFacet(xsdMinInclusiveFacet);
				if (result == null) result = caseXSDFixedFacet(xsdMinInclusiveFacet);
				if (result == null) result = caseXSDConstrainingFacet(xsdMinInclusiveFacet);
				if (result == null) result = caseXSDFacet(xsdMinInclusiveFacet);
				if (result == null) result = caseXSDComponent(xsdMinInclusiveFacet);
				if (result == null) result = caseXSDConcreteComponent(xsdMinInclusiveFacet);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_MIN_LENGTH_FACET: {
				XSDMinLengthFacet xsdMinLengthFacet = (XSDMinLengthFacet)theEObject;
				T result = caseXSDMinLengthFacet(xsdMinLengthFacet);
				if (result == null) result = caseXSDFixedFacet(xsdMinLengthFacet);
				if (result == null) result = caseXSDConstrainingFacet(xsdMinLengthFacet);
				if (result == null) result = caseXSDFacet(xsdMinLengthFacet);
				if (result == null) result = caseXSDComponent(xsdMinLengthFacet);
				if (result == null) result = caseXSDConcreteComponent(xsdMinLengthFacet);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_MODEL_GROUP: {
				XSDModelGroup xsdModelGroup = (XSDModelGroup)theEObject;
				T result = caseXSDModelGroup(xsdModelGroup);
				if (result == null) result = caseXSDTerm(xsdModelGroup);
				if (result == null) result = caseXSDComponent(xsdModelGroup);
				if (result == null) result = caseXSDParticleContent(xsdModelGroup);
				if (result == null) result = caseXSDConcreteComponent(xsdModelGroup);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_MODEL_GROUP_DEFINITION: {
				XSDModelGroupDefinition xsdModelGroupDefinition = (XSDModelGroupDefinition)theEObject;
				T result = caseXSDModelGroupDefinition(xsdModelGroupDefinition);
				if (result == null) result = caseXSDRedefinableComponent(xsdModelGroupDefinition);
				if (result == null) result = caseXSDParticleContent(xsdModelGroupDefinition);
				if (result == null) result = caseXSDRedefineContent(xsdModelGroupDefinition);
				if (result == null) result = caseXSDNamedComponent(xsdModelGroupDefinition);
				if (result == null) result = caseXSDConcreteComponent(xsdModelGroupDefinition);
				if (result == null) result = caseXSDSchemaContent(xsdModelGroupDefinition);
				if (result == null) result = caseXSDComponent(xsdModelGroupDefinition);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_NAMED_COMPONENT: {
				XSDNamedComponent xsdNamedComponent = (XSDNamedComponent)theEObject;
				T result = caseXSDNamedComponent(xsdNamedComponent);
				if (result == null) result = caseXSDComponent(xsdNamedComponent);
				if (result == null) result = caseXSDConcreteComponent(xsdNamedComponent);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_NOTATION_DECLARATION: {
				XSDNotationDeclaration xsdNotationDeclaration = (XSDNotationDeclaration)theEObject;
				T result = caseXSDNotationDeclaration(xsdNotationDeclaration);
				if (result == null) result = caseXSDNamedComponent(xsdNotationDeclaration);
				if (result == null) result = caseXSDSchemaContent(xsdNotationDeclaration);
				if (result == null) result = caseXSDComponent(xsdNotationDeclaration);
				if (result == null) result = caseXSDConcreteComponent(xsdNotationDeclaration);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_NUMERIC_FACET: {
				XSDNumericFacet xsdNumericFacet = (XSDNumericFacet)theEObject;
				T result = caseXSDNumericFacet(xsdNumericFacet);
				if (result == null) result = caseXSDFundamentalFacet(xsdNumericFacet);
				if (result == null) result = caseXSDFacet(xsdNumericFacet);
				if (result == null) result = caseXSDComponent(xsdNumericFacet);
				if (result == null) result = caseXSDConcreteComponent(xsdNumericFacet);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_ORDERED_FACET: {
				XSDOrderedFacet xsdOrderedFacet = (XSDOrderedFacet)theEObject;
				T result = caseXSDOrderedFacet(xsdOrderedFacet);
				if (result == null) result = caseXSDFundamentalFacet(xsdOrderedFacet);
				if (result == null) result = caseXSDFacet(xsdOrderedFacet);
				if (result == null) result = caseXSDComponent(xsdOrderedFacet);
				if (result == null) result = caseXSDConcreteComponent(xsdOrderedFacet);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_PARTICLE: {
				XSDParticle xsdParticle = (XSDParticle)theEObject;
				T result = caseXSDParticle(xsdParticle);
				if (result == null) result = caseXSDComplexTypeContent(xsdParticle);
				if (result == null) result = caseXSDComponent(xsdParticle);
				if (result == null) result = caseXSDConcreteComponent(xsdParticle);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_PARTICLE_CONTENT: {
				XSDParticleContent xsdParticleContent = (XSDParticleContent)theEObject;
				T result = caseXSDParticleContent(xsdParticleContent);
				if (result == null) result = caseXSDConcreteComponent(xsdParticleContent);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_PATTERN_FACET: {
				XSDPatternFacet xsdPatternFacet = (XSDPatternFacet)theEObject;
				T result = caseXSDPatternFacet(xsdPatternFacet);
				if (result == null) result = caseXSDRepeatableFacet(xsdPatternFacet);
				if (result == null) result = caseXSDConstrainingFacet(xsdPatternFacet);
				if (result == null) result = caseXSDFacet(xsdPatternFacet);
				if (result == null) result = caseXSDComponent(xsdPatternFacet);
				if (result == null) result = caseXSDConcreteComponent(xsdPatternFacet);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_REDEFINABLE_COMPONENT: {
				XSDRedefinableComponent xsdRedefinableComponent = (XSDRedefinableComponent)theEObject;
				T result = caseXSDRedefinableComponent(xsdRedefinableComponent);
				if (result == null) result = caseXSDNamedComponent(xsdRedefinableComponent);
				if (result == null) result = caseXSDRedefineContent(xsdRedefinableComponent);
				if (result == null) result = caseXSDComponent(xsdRedefinableComponent);
				if (result == null) result = caseXSDSchemaContent(xsdRedefinableComponent);
				if (result == null) result = caseXSDConcreteComponent(xsdRedefinableComponent);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_REDEFINE_CONTENT: {
				XSDRedefineContent xsdRedefineContent = (XSDRedefineContent)theEObject;
				T result = caseXSDRedefineContent(xsdRedefineContent);
				if (result == null) result = caseXSDSchemaContent(xsdRedefineContent);
				if (result == null) result = caseXSDConcreteComponent(xsdRedefineContent);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_REDEFINE: {
				XSDRedefine xsdRedefine = (XSDRedefine)theEObject;
				T result = caseXSDRedefine(xsdRedefine);
				if (result == null) result = caseXSDSchemaCompositor(xsdRedefine);
				if (result == null) result = caseXSDSchemaDirective(xsdRedefine);
				if (result == null) result = caseXSDSchemaContent(xsdRedefine);
				if (result == null) result = caseXSDConcreteComponent(xsdRedefine);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_REPEATABLE_FACET: {
				XSDRepeatableFacet xsdRepeatableFacet = (XSDRepeatableFacet)theEObject;
				T result = caseXSDRepeatableFacet(xsdRepeatableFacet);
				if (result == null) result = caseXSDConstrainingFacet(xsdRepeatableFacet);
				if (result == null) result = caseXSDFacet(xsdRepeatableFacet);
				if (result == null) result = caseXSDComponent(xsdRepeatableFacet);
				if (result == null) result = caseXSDConcreteComponent(xsdRepeatableFacet);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_SCHEMA: {
				XSDSchema xsdSchema = (XSDSchema)theEObject;
				T result = caseXSDSchema(xsdSchema);
				if (result == null) result = caseXSDScope(xsdSchema);
				if (result == null) result = caseXSDComponent(xsdSchema);
				if (result == null) result = caseXSDConcreteComponent(xsdSchema);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_SCHEMA_COMPOSITOR: {
				XSDSchemaCompositor xsdSchemaCompositor = (XSDSchemaCompositor)theEObject;
				T result = caseXSDSchemaCompositor(xsdSchemaCompositor);
				if (result == null) result = caseXSDSchemaDirective(xsdSchemaCompositor);
				if (result == null) result = caseXSDSchemaContent(xsdSchemaCompositor);
				if (result == null) result = caseXSDConcreteComponent(xsdSchemaCompositor);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_SCHEMA_CONTENT: {
				XSDSchemaContent xsdSchemaContent = (XSDSchemaContent)theEObject;
				T result = caseXSDSchemaContent(xsdSchemaContent);
				if (result == null) result = caseXSDConcreteComponent(xsdSchemaContent);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_SCHEMA_DIRECTIVE: {
				XSDSchemaDirective xsdSchemaDirective = (XSDSchemaDirective)theEObject;
				T result = caseXSDSchemaDirective(xsdSchemaDirective);
				if (result == null) result = caseXSDSchemaContent(xsdSchemaDirective);
				if (result == null) result = caseXSDConcreteComponent(xsdSchemaDirective);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_SCOPE: {
				XSDScope xsdScope = (XSDScope)theEObject;
				T result = caseXSDScope(xsdScope);
				if (result == null) result = caseXSDComponent(xsdScope);
				if (result == null) result = caseXSDConcreteComponent(xsdScope);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_SIMPLE_TYPE_DEFINITION: {
				XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)theEObject;
				T result = caseXSDSimpleTypeDefinition(xsdSimpleTypeDefinition);
				if (result == null) result = caseXSDTypeDefinition(xsdSimpleTypeDefinition);
				if (result == null) result = caseXSDComplexTypeContent(xsdSimpleTypeDefinition);
				if (result == null) result = caseXSDRedefinableComponent(xsdSimpleTypeDefinition);
				if (result == null) result = caseXSDRedefineContent(xsdSimpleTypeDefinition);
				if (result == null) result = caseXSDComponent(xsdSimpleTypeDefinition);
				if (result == null) result = caseXSDNamedComponent(xsdSimpleTypeDefinition);
				if (result == null) result = caseXSDSchemaContent(xsdSimpleTypeDefinition);
				if (result == null) result = caseXSDConcreteComponent(xsdSimpleTypeDefinition);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_TERM: {
				XSDTerm xsdTerm = (XSDTerm)theEObject;
				T result = caseXSDTerm(xsdTerm);
				if (result == null) result = caseXSDComponent(xsdTerm);
				if (result == null) result = caseXSDParticleContent(xsdTerm);
				if (result == null) result = caseXSDConcreteComponent(xsdTerm);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_TOTAL_DIGITS_FACET: {
				XSDTotalDigitsFacet xsdTotalDigitsFacet = (XSDTotalDigitsFacet)theEObject;
				T result = caseXSDTotalDigitsFacet(xsdTotalDigitsFacet);
				if (result == null) result = caseXSDFixedFacet(xsdTotalDigitsFacet);
				if (result == null) result = caseXSDConstrainingFacet(xsdTotalDigitsFacet);
				if (result == null) result = caseXSDFacet(xsdTotalDigitsFacet);
				if (result == null) result = caseXSDComponent(xsdTotalDigitsFacet);
				if (result == null) result = caseXSDConcreteComponent(xsdTotalDigitsFacet);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_TYPE_DEFINITION: {
				XSDTypeDefinition xsdTypeDefinition = (XSDTypeDefinition)theEObject;
				T result = caseXSDTypeDefinition(xsdTypeDefinition);
				if (result == null) result = caseXSDRedefinableComponent(xsdTypeDefinition);
				if (result == null) result = caseXSDRedefineContent(xsdTypeDefinition);
				if (result == null) result = caseXSDNamedComponent(xsdTypeDefinition);
				if (result == null) result = caseXSDSchemaContent(xsdTypeDefinition);
				if (result == null) result = caseXSDComponent(xsdTypeDefinition);
				if (result == null) result = caseXSDConcreteComponent(xsdTypeDefinition);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_WHITE_SPACE_FACET: {
				XSDWhiteSpaceFacet xsdWhiteSpaceFacet = (XSDWhiteSpaceFacet)theEObject;
				T result = caseXSDWhiteSpaceFacet(xsdWhiteSpaceFacet);
				if (result == null) result = caseXSDFixedFacet(xsdWhiteSpaceFacet);
				if (result == null) result = caseXSDConstrainingFacet(xsdWhiteSpaceFacet);
				if (result == null) result = caseXSDFacet(xsdWhiteSpaceFacet);
				if (result == null) result = caseXSDComponent(xsdWhiteSpaceFacet);
				if (result == null) result = caseXSDConcreteComponent(xsdWhiteSpaceFacet);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSD_WILDCARD: {
				XSDWildcard xsdWildcard = (XSDWildcard)theEObject;
				T result = caseXSDWildcard(xsdWildcard);
				if (result == null) result = caseXSDTerm(xsdWildcard);
				if (result == null) result = caseXSDComponent(xsdWildcard);
				if (result == null) result = caseXSDParticleContent(xsdWildcard);
				if (result == null) result = caseXSDConcreteComponent(xsdWildcard);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case XsdPackage.XSDX_PATH_DEFINITION: {
				XSDXPathDefinition xsdxPathDefinition = (XSDXPathDefinition)theEObject;
				T result = caseXSDXPathDefinition(xsdxPathDefinition);
				if (result == null) result = caseXSDComponent(xsdxPathDefinition);
				if (result == null) result = caseXSDConcreteComponent(xsdxPathDefinition);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			default: return defaultCase(theEObject);
		}
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Annotation</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Annotation</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDAnnotation(XSDAnnotation object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Attribute Declaration</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Attribute Declaration</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDAttributeDeclaration(XSDAttributeDeclaration object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Attribute Group Content</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Attribute Group Content</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDAttributeGroupContent(XSDAttributeGroupContent object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Attribute Group Definition</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Attribute Group Definition</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDAttributeGroupDefinition(XSDAttributeGroupDefinition object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Attribute Use</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Attribute Use</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDAttributeUse(XSDAttributeUse object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Bounded Facet</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Bounded Facet</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDBoundedFacet(XSDBoundedFacet object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Cardinality Facet</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Cardinality Facet</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDCardinalityFacet(XSDCardinalityFacet object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Complex Type Content</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Complex Type Content</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDComplexTypeContent(XSDComplexTypeContent object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Complex Type Definition</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Complex Type Definition</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDComplexTypeDefinition(XSDComplexTypeDefinition object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Component</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Component</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDComponent(XSDComponent object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Concrete Component</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Concrete Component</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDConcreteComponent(XSDConcreteComponent object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Constraining Facet</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Constraining Facet</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDConstrainingFacet(XSDConstrainingFacet object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Diagnostic</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Diagnostic</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDDiagnostic(XSDDiagnostic object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Element Declaration</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Element Declaration</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDElementDeclaration(XSDElementDeclaration object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Enumeration Facet</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Enumeration Facet</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDEnumerationFacet(XSDEnumerationFacet object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Facet</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Facet</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDFacet(XSDFacet object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Feature</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Feature</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDFeature(XSDFeature object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Fixed Facet</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Fixed Facet</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDFixedFacet(XSDFixedFacet object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Fraction Digits Facet</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Fraction Digits Facet</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDFractionDigitsFacet(XSDFractionDigitsFacet object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Fundamental Facet</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Fundamental Facet</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDFundamentalFacet(XSDFundamentalFacet object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Identity Constraint Definition</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Identity Constraint Definition</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDIdentityConstraintDefinition(XSDIdentityConstraintDefinition object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Import</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Import</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDImport(XSDImport object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Include</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Include</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDInclude(XSDInclude object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Length Facet</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Length Facet</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDLengthFacet(XSDLengthFacet object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Max Exclusive Facet</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Max Exclusive Facet</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDMaxExclusiveFacet(XSDMaxExclusiveFacet object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Max Facet</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Max Facet</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDMaxFacet(XSDMaxFacet object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Max Inclusive Facet</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Max Inclusive Facet</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDMaxInclusiveFacet(XSDMaxInclusiveFacet object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Max Length Facet</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Max Length Facet</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDMaxLengthFacet(XSDMaxLengthFacet object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Min Exclusive Facet</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Min Exclusive Facet</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDMinExclusiveFacet(XSDMinExclusiveFacet object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Min Facet</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Min Facet</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDMinFacet(XSDMinFacet object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Min Inclusive Facet</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Min Inclusive Facet</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDMinInclusiveFacet(XSDMinInclusiveFacet object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Min Length Facet</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Min Length Facet</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDMinLengthFacet(XSDMinLengthFacet object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Model Group</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Model Group</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDModelGroup(XSDModelGroup object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Model Group Definition</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Model Group Definition</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDModelGroupDefinition(XSDModelGroupDefinition object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Named Component</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Named Component</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDNamedComponent(XSDNamedComponent object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Notation Declaration</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Notation Declaration</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDNotationDeclaration(XSDNotationDeclaration object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Numeric Facet</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Numeric Facet</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDNumericFacet(XSDNumericFacet object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Ordered Facet</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Ordered Facet</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDOrderedFacet(XSDOrderedFacet object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Particle</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Particle</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDParticle(XSDParticle object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Particle Content</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Particle Content</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDParticleContent(XSDParticleContent object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Pattern Facet</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Pattern Facet</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDPatternFacet(XSDPatternFacet object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Redefinable Component</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Redefinable Component</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDRedefinableComponent(XSDRedefinableComponent object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Redefine Content</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Redefine Content</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDRedefineContent(XSDRedefineContent object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Redefine</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Redefine</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDRedefine(XSDRedefine object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Repeatable Facet</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Repeatable Facet</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDRepeatableFacet(XSDRepeatableFacet object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Schema</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Schema</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDSchema(XSDSchema object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Schema Compositor</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Schema Compositor</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDSchemaCompositor(XSDSchemaCompositor object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Schema Content</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Schema Content</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDSchemaContent(XSDSchemaContent object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Schema Directive</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Schema Directive</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDSchemaDirective(XSDSchemaDirective object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Scope</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Scope</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDScope(XSDScope object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Simple Type Definition</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Simple Type Definition</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDSimpleTypeDefinition(XSDSimpleTypeDefinition object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Term</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Term</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDTerm(XSDTerm object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Total Digits Facet</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Total Digits Facet</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDTotalDigitsFacet(XSDTotalDigitsFacet object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Type Definition</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Type Definition</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDTypeDefinition(XSDTypeDefinition object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD White Space Facet</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD White Space Facet</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDWhiteSpaceFacet(XSDWhiteSpaceFacet object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSD Wildcard</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSD Wildcard</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDWildcard(XSDWildcard object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XSDX Path Definition</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XSDX Path Definition</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXSDXPathDefinition(XSDXPathDefinition object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch, but this is the last case anyway.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
	 * @generated
	 */
	public T defaultCase(EObject object) {
		return null;
	}

} //XsdSwitch
